Interrupt 21h Function 71A7h Minor Code 0h
Converts a
64-bit file time to MS-DOS date and time values.
mov ax, 71A7h ; date and time format conversion
mov bl, 0 ; File Time To DOS Time
mov si, seg lpft ; see below
mov ds, si
mov si, offset lpft
int 21h
jc error
mov [DOSTime], cx
mov [DOSDate], dx
mov [MilliSeconds], bh ; number of 10ms intervals in 2 seconds
Parameters
lpft
Address of a FILETIME
Return Value
Clears the
carry flag, and sets the BH, CX, and DX registers to these values if
successful:
BH |
Number of
10 millisecond intervals in 2 seconds to add to the MS-DOS time. It can be a
value in the range 0 to 199. |
CX |
MS-DOS
time. The time is a packed 16-bit value with the following form: |
Bits |
Contents |
0-4 |
Second
divided by 2 |
5-10 |
Minute (0-59) |
11-15 |
Hour (0-23 on a 24-hour clock) |
DX |
MS-DOS
date. The date is a packed 16-bit value with the following form: |
Bits |
Contents |
0-4 |
Day of the
month (1-31) |
5-8 |
Month (1 =
January, 2 = February, and so on) |
9-15 |
Year offset
from 1980 (that is, add 1980 to get the actual year) |
Otherwise,
the function sets the carry flag and sets the AX register to an error value.
Remarks
The MS-DOS
date format can represent only dates between 1/1/1980 and 12/31/2107; this
conversion fails if the input file time is outside this range.
The time in FILETIME
must be Coordinated Universal Time (UTC). The MS-DOS time is local time.